import os
import sys
import shutil
from app import app

# 创建必要的目录结构
def setup_directories():
    # 确保模板目录存在
    templates_dir = os.path.join(os.getcwd(), 'templates')
    os.makedirs(templates_dir, exist_ok=True)
    
    # 创建必要的模板子目录
    template_subdirs = ['auth', 'data', 'prediction', 'analysis']
    for subdir in template_subdirs:
        os.makedirs(os.path.join(templates_dir, subdir), exist_ok=True)
    
    # 确保静态文件目录存在
    static_dir = os.path.join(os.getcwd(), 'static')
    os.makedirs(static_dir, exist_ok=True)
    
    # 创建静态文件子目录
    static_subdirs = ['css', 'js', 'img', 'results']
    for subdir in static_subdirs:
        os.makedirs(os.path.join(static_dir, subdir), exist_ok=True)
    
    # 确保上传目录存在
    os.makedirs(os.path.join(os.getcwd(), 'uploads'), exist_ok=True)
    
    # 确保模型目录存在
    models_dir = os.path.join(os.getcwd(), 'models', 'weights')
    os.makedirs(models_dir, exist_ok=True)
    
    # 确保结果目录存在
    os.makedirs(os.path.join(os.getcwd(), 'results'), exist_ok=True)

if __name__ == '__main__':
    setup_directories()
    
    # 添加帮助信息
    if len(sys.argv) > 1 and sys.argv[1] == '--help':
        print("河域分割系统 - 使用说明")
        print("运行应用: python run.py")
        print("初始化数据库: python run.py init-db")
        print("添加测试用户: python run.py add-test-user <用户名> <密码> <邮箱>")
        sys.exit(0)
    
    # 初始化数据库
    if len(sys.argv) > 1 and sys.argv[1] == 'init-db':
        with app.app_context():
            from models.database import db
            db.create_all()
            print("数据库初始化完成")
        sys.exit(0)
    
    # 添加测试用户
    if len(sys.argv) > 4 and sys.argv[1] == 'add-test-user':
        username = sys.argv[2]
        password = sys.argv[3]
        email = sys.argv[4]
        
        with app.app_context():
            from models.database import db, User
            
            # 检查用户是否已存在
            user = User.query.filter_by(username=username).first()
            if user:
                print(f"用户 {username} 已存在")
                sys.exit(1)
                
            # 创建新用户
            new_user = User(username=username, email=email)
            new_user.set_password(password)
            
            db.session.add(new_user)
            db.session.commit()
            
            print(f"已添加用户: {username}")
        sys.exit(0)
    
    # 启动应用
    app.run(debug=True, host='0.0.0.0', port=5000) 